	//codice per il dragdrop	
	function doItem(item,dest,isfinal,src) {
		item.addEvent('mousedown', function(e) {
			e = new Event(e).stop();
			var clone = this.clone()
				.setStyles(this.getCoordinates()) // this returns an object with left/top/bottom/right, so its perfect
				.setStyles({'opacity': 0.7, 'position': 'absolute'})
				.addEvent('emptydrop', function() {
					$$(dest).removeEvents();				
					this.removeEvents();
					this.remove();
				}).inject(document.body);
			var elementoA =getElementoForm( item.getElements('a') );
			$$(dest).each(function(droppolo,index){
/*			
					if( droppolo.getAttribute('id')==_testDiv )  //'valori'
						fx[index] = droppolo.effect('background-color', {wait: false});
					else
						fxe[index] = droppolo.effect('background-color', {wait: false});
*/
					if( droppolo.getAttribute('id')==_testDiv )  //'valori'
						fx[index] = droppolo.tween('background-color', {wait: false});
					else
						fxe[index] = droppolo.tween('background-color', {wait: false});
						
					droppolo.addEvents({
						'drop': function() {
							droppolo.removeEvents();						
							if( droppolo.getAttribute('id')==_testDiv )  //'valori'
								fx[index].start('7389AE').chain(fx[index].start.pass('eeeeee', fx[index]));		
							else
								fxe[index].start('7389AE').chain(fxe[index].start.pass('eeeeee', fxe[index]));	
							
							clone.removeEvents();		
							clone.remove();
							if(elementoA==null) { alert('null -item'); return; }
														
							var cando = false;
							//verifica se posso inserire elementi qui.
							if(!isfinal)
								cando=true;
							else {
								if( canDrag(droppolo,elementoA.tipo)==0) {
									if(elementoA.tipo.substring(0,1).test('^'+droppolo.getAttribute('id').substring(0,1),'i') )
										cando=true;
								}
							}
							if(cando==true) {
								var destname = '';
								var mlista = '';
								var dlista = '';							
								var isSingle = false;
								//imposto tutte le prop della src/dest
								if( droppolo.getAttribute('id')==_testDiv ) { //'valori'
									destname =_srcPro; //'#posizioni .dropme';
									if(elementoA.tipo.test('^p','i'))
										dlista=_contPro; //'pro_lista';
									else
										dlista=_contReg; //'reg_lista';								
									isSingle = true;
								} else {
									destname =_srcReg; //'#valori';
									isSingle = false;							
								}
								if(elementoA.tipo.test('^p','i')) {
									mlista = _contPro; //'pro_lista';
								} else {
									mlista = _contReg; //'reg_lista';
								}
								
								var newModule = item.clone();
								if( droppolo.getAttribute('id') == _testDiv ) { //cerca il figlio con l'id tipo corrispondente.
									var sonFolder = droppolo.getElements('ul'); // ('#' + elementoA.tipo) ) ;
									var pos = -1;
									for(var p = 0; p<sonFolder.length;p++) {
										if(sonFolder[p].getAttribute('id') == elementoA.tipo ) {
											pos = p;break;
										}
									}
									if(sonFolder !=null && sonFolder.length>0 && pos!=-1) { 
										newModule.inject(sonFolder[pos]);
									} else //non lo trovo comunque inserisco nei repository
										newModule.inject(droppolo);							
								} else	{							
									var sonFolder = droppolo.getElements('ul'); // ('#' + elementoA.tipo) ) ;
									var pos = -1;
									for(var p = 0; p<sonFolder.length;p++) {
										if(sonFolder[p].getAttribute('id') == elementoA.tipo ) {
											pos = p;break;
										}
									}
									if(sonFolder !=null && sonFolder.length>0 && pos!=-1) { 
										newModule.inject(sonFolder[pos]);
									} else //non lo trovo comunque inserisco nei repository
										newModule.inject(droppolo);										
								}
								doItem(newModule,destname,isSingle,droppolo);
								item.remove();
								insLista(elementoA,mlista);	
								if(dlista!='')							
									delLista(elementoA,dlista);
								if(destname!=_srcReg) { //'#valori'
									//alert(_srcReg + " --" + destname);
									//if(src==null)
									//	src = $(posReg);
									restoreEmpty(src);
								}
							} else { alert('Impossibile Inserire l\'elemento, raggiunta capienza massima o oggetto non conforme.'); restoreEmpty(droppolo); return; }
						},
						
						'over': function() {
							if( droppolo.getAttribute('id')==_testDiv )  //'valori'
								fx[index].start('98B5C1');
							else
								fxe[index].start('98B5C1');
							
						},
						'leave': function() {
							if( droppolo.getAttribute('id')==_testDiv ) //'valori'
								fx[index].start('eeeeee');
							else
								fxe[index].start('eeeeee');
						}						
					});
			
			});




			var drag = clone.makeDraggable({
					container: $('gesModel'),
					droppables: $$(dest),
					
					onDrop: function (el, droppable) {
						if(!droppable) return;
//						alert('droppable. ' + droppable.getAttribute('id'));
						if( droppable.getAttribute('id')==_testDiv )  //'valori'
							droppable.tween('background-color','7389AE');
						el.removeEvents();		
						el.remove();							
					},
					onEnter: function (el, droppable) {
						if(!droppable) return;
						if( droppable.getAttribute('id')==_testDiv )  //'valori'
							droppable.tween('background-color','7389AE');
					},
					onLeave: function (el, droppable) {
						droppable.tween('background-color','eeeeee');
					}
					/*,
					onComplete: function() {
						clone.remove();
					}*/
				});
				
			drag.start(e); // start the event manual
			
			});		
	
	};
